package com.atguigu.tingshu.album.service;

import com.atguigu.tingshu.model.album.AlbumInfo;
import com.atguigu.tingshu.query.album.AlbumInfoQuery;
import com.atguigu.tingshu.vo.album.AlbumInfoVo;
import com.atguigu.tingshu.vo.album.AlbumListVo;
import com.atguigu.tingshu.vo.album.AlbumStatVo;
import com.atguigu.tingshu.vo.album.TrackListVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface AlbumInfoService extends IService<AlbumInfo> {

    /**
    * @author brendan
            * @description TODO 保存专辑数据
            * @date 2025/1/16 9:51
            albumInfoVo
    * @return
            **/
    void saveAlbumInfo(AlbumInfoVo albumInfoVo);

    /**
    * @author brendan
            * @description TODO 分页查询专辑数据
            * @date 2025/1/16 9:51
            albumInfovVoPage
 * @param albumInfoQuery
    * @return
     * **/

    Page<AlbumListVo> findUserAlbumPage(Page<AlbumListVo> albumInfovVoPage, AlbumInfoQuery albumInfoQuery);

    /**
    * @author brendan
            * @description TODO 回显数据
            * @date 2025/1/16 9:51
            albumId
    * @return
 * @return com.atguigu.tingshu.model.album.AlbumInfo
            **/
    AlbumInfo getAlbumInfo(Long albumId);

    /**
    * @author brendan
            * @description TODO 删除专辑信息
            * @date 2025/1/16 9:50
            albumId
    * @return
            **/
    void removeAlbumInfo(Long albumId);

    /**
    * @author brendan
            * @description TODO 修改专辑信息
            * @date 2025/1/16 9:50
    * @return
     **/
    void updateAlbumInfo(AlbumInfoVo albumInfoVo, Long userId, Long albumId);
    
    /**
    * @author brendan
            * @description TODO 查询当前用户已经上传过的专辑列表
            * @date 2025/1/16 11:00
            userId
    * @return
 * @return java.util.List<com.atguigu.tingshu.model.album.AlbumInfo>
            **/
    List<AlbumInfo> findUserAllAlbumList(Long userId);

    AlbumStatVo getAlbumInfoStat(Long albumId);

    List<TrackListVo> getTrackInfoList(List<Long> collectTrackIds);

    /*
     * @description: TODO 获取专辑所有id
     * @author: yyj
     * @date: 2025-02-14
    */
    List<Long> getAlbumIds();
}
